#ifndef SWTIMER_H
#define SWTIMER_H

#include <stdint.h>
#include "main.h"

typedef enum {
    TIMER_TYPE_SINGLE,
    TIMER_TYPE_PERIODIC
} TimerType;

typedef void (*TimerCallback)(void);

typedef struct {
    uint32_t startTick; // 定时器启动时的tick值
    uint32_t interval;  // 定时器间隔时间（毫秒）
    TimerType type;     // 定时器类型（单次或周期性）
    TimerCallback callback; // 回调函数
    int active;         // 定时器是否激活
} SoftwareTimer;

// 初始化软件定时器
void initSoftwareTimer(SoftwareTimer *timer, uint32_t interval, TimerType type, TimerCallback callback);

// 启动软件定时器
void startSoftwareTimer(SoftwareTimer *timer);

// 停止软件定时器
void stopSoftwareTimer(SoftwareTimer *timer);

// 检查定时器是否超时，并执行相应的回调函数
void checkSoftwareTimers(SoftwareTimer *timers, int numTimers);

// 检查指定定时器是否超时
// 返回1表示已超时，0表示未超时
int isSoftwareTimerTimeout(SoftwareTimer *timer);

#endif // SWTIMER_H
